package com.flida.echart.basic.api.service;

import com.flida.echart.basic.api.system.entity.SysMenuEntity;
import com.flida.echart.basic.api.system.entity.SysRoleEntity;

import java.util.List;
import java.util.Map;

/**
 * Created by yzc on 2016/12/18.
 */
public interface GateUserRoleService {

    /**userole相關操作**/
    void saveOrUpdateUserRole(Long userId, List<Long> roleIdList);

    /**
     * 根据用户ID，获取角色ID列表
     */
    List<Long> queryRoleIdList(Long userId);
    /**
     * 根据用户ID，刪除用戶角色（中间表）
     */
    void deleteUserRole(Long userId);

    /**role相關操作**/
    /**
     * 根据角色id查询角色
     */
    SysRoleEntity queryObjectRole(Long roleId);
    /**
     * 查询角色
     */
    List<SysRoleEntity> queryListRole(Map<String, Object> map);
    /**
     * 查询角色 条数
     */
    int queryTotalRole(Map<String, Object> map);
    /**
     * 保持角色
     */
    void saveRole(SysRoleEntity role);
    /**
     * 修改角色
     */
    void updateRole(SysRoleEntity role);
    /**
     * 删除角色
     */
    void deleteBatchRole(Long[] roleIds);

    /**角色菜单相关**/
    void saveOrUpdateRoleMenu(Long roleId, List<Long> menuIdList);

    /**
     * 根据角色ID，获取菜单ID列表
     */
    List<Long> queryMenuIdListRoleMenu(Long roleId);

    /**菜单相关**/
    /**
     * 根据父菜单，查询子菜单
     * @param parentId 父菜单ID
     * @param menuIdList  用户菜单ID
     */
    List<SysMenuEntity> queryListParentId(Long parentId, List<Long> menuIdList);

    /**
     * 获取不包含按钮的菜单列表
     */
    List<SysMenuEntity> queryNotButtonList();

    /**
     * 获取用户菜单列表
     */
    List<SysMenuEntity> getUserMenuList(Long userId);


    /**
     * 查询菜单
     */
    SysMenuEntity queryObjectMenu(Long menuId);

    /**
     * 查询菜单列表
     */
    List<SysMenuEntity> queryListMenu(Map<String, Object> map);

    /**
     * 查询总数
     */
    int queryTotalMenu(Map<String, Object> map);

    /**
     * 保存菜单
     */
    void saveMenu(SysMenuEntity menu);

    /**
     * 修改
     */
    void updateMenu(SysMenuEntity menu);

    /**
     * 删除
     */
    void deleteBatchMenu(Long[] menuIds);

}
